﻿using System;
namespace OpenComposite.EII.Repository
{
	/// <summary>
	/// A class that implements this interface can be used as logical-physical intermediate.
	/// By default only LogicalWebMethod and LogicalRuleResultEndpoint implement this interface.
	/// Currently it is only used for the code mapping.
	/// </summary>
	public interface ISupportLogicalPhysicalMapping
	{
		string Name { get; set; }

		#region Business Objects
		int InputBusinessObjectID { get; set; }
		BusinessObject InputBusinessObject { get; set; }
		int OutputBusinessObjectID { get; set; }
		BusinessObject OutputBusinessObject { get; set; }
		#endregion

		#region WebService
		WebService WebService { get; }
		WebMethod WebMethod { get; }
		int WebMethodID { get; set; }

		WebMethod CallbackWebMethod { get; }
		int CallbackWebMethodID { get; set; }

		WebService ProxyWebService { get; }
		WebMethod ProxyWebMethod { get; }
		int ProxyWebMethodID { get; set; }

		WebMethod ProxyCallbackWebMethod { get; }
		int ProxyCallbackWebMethodID { get; set; }
		#endregion

		#region Human Activity
		HumanActivity HumanActivity { get; }
		int HumanActivityID { get; set; }
		#endregion

		#region Message Queue
		MessageQueueEx SendMessageQueue { get; }
		int SendMessageQueueID { get; set; }
		MessageQueueEx ReceiveMessageQueue { get; }
		int ReceiveMessageQueueID { get; set; }
		#endregion

		#region XSLT Mapping
		OpenComposite.Mapper.XsltDocument InputXSLT { get; set; }
		string InputConnections { get; set; }
		OpenComposite.Mapper.XsltDocument OutputXSLT { get; set; }
		string OutputConnections { get; set; }

		OpenComposite.Mapper.XsltDocument ProxyInputXSLT { get; set; }
		string ProxyInputConnections { get; set; }
		OpenComposite.Mapper.XsltDocument ProxyOutputXSLT { get; set; }
		string ProxyOutputConnections { get; set; }
		#endregion

		#region CodeMapping
		bool UseInputCodeMapping { get; set; }
		string InputCodeMapping { get; set; }
		string OutputCodeMapping { get; set; }
		bool UseOutputCodeMapping { get; set; }
		#endregion
	}
}
